くらめその情シス:新本社オフィスのネットワーク機器を監視するようにしたおはなし
どうも、情シスやってますアノテーション 徳道です。
先日、本社オフィスの移転におけるオフィスネットワークのブログが公開されています。
今回はこれに関連して、ネットワーク機器の監視を入れてみました、という紹介です。
実際の監視設定をすべて記載するとちょっと1つの記事としてはボリュームが大きくなりすぎるので、今回はもっとも一般的なPingによるネットワーク機器の死活監視と通知の設定をご紹介します。
監視要件
ネットワーク機器を監視する方法で一般的なものとして、管理用IPアドレス(危機の設定されているTelnetやWebでアクセスするためのIPアドレス)に対し、PingやSNMPで応答があるかという死活監視があります。
他にはSNMPトラップで個別のポートのLinkUp/Downを検出したり、トラフィック情報を取得したり、ということも行いますね。
今回は、以下の要件で、情報システムがネットワーク機器が故障したことや、性能的なものをモニタリングできるようにしています。
- IPアドレスを持つネットワーク機器が故障してダウンしたことを検出できる
- ルーターのWAN側トラフィックをモニタリングできる
- コア層のL3スイッチのトラフィックをモニタリングできる
- ネットワーク機器のダウンをSlackに通知できる
- イベントを検出してアクションを設定できる
- クラウドから利用ができる
- 導入コストが安価である
これらを検討した結果、今回は監視アプリケーションとして PRTG Network Monitor を導入しました。
決め手は100センサーまで無料でフル機能が使える、というところですね。
監視の構成
さて、どうやってオフィス内のNW機器をクラウドから監視するか。
クラスメソッド新オフィスのネットワークについて で言及があるのですが、「保守専用回線」というものがあります。
ネットワーク機器の管理IPアドレスはすべて保守専用回線に持っており、保守専用回線はクラスメソッドの基幹システムのVPCとSite-to-Site VPNで接続されています。
このVPC上にEC2サーバを立てて、そこに監視アプリケーションをインストールしています。
WindowsサーバのEC2インスタンスを作成してダウンロードしてきたアプリをインストールすればOKです。
インスタンスタイプはメモリ4GBのMediumタイプでも小規模なLANであればひとまず問題ないと思います。
(今回はt3.mediumインスタンスを用いています)
実際の監視設定
それでは実際の監視設定を見てみましょう。
オフィシャルではジュピターテクノロジー様が分かりやすい日本語のインストールガイドを公開しています。
https://www.jtc-i.co.jp/product/prtg/document.html
初期の設定はほぼこれを見ていただければOKじゃないかな、と思います。
まずはグループを追加
まずは監視する機器を登録するグループの追加をしました。
今回は本社オフィスのグループとして「日比谷オフィス」グループを作成しています。
Pingによる死活監視
Pingの監視はデバイスを追加してIPアドレスを指定します。
デバイスを追加する作業はPing監視をせず、トラフィックモニタやSNMPだけとしても最初の監視対象を指定するために必ず行います。
デバイスを作成する際には先程作成したグループを指定する必要があります。グループが作成されていないと、初期で設定されている「ローカルプローブ」に追加になります、
※グループは後で作成してデバイスを移行することも可能です。
まず監視対象のネットワーク機器のIPアドレスを監視サーバのOS上でPingして、疎通があることを確認しておきましょう。
メニューから「デバイスを追加」→「グループ」「デバイス名」「IPアドレス」「アイコン」を指定します。
追加されるとデバイスがツリー上に表示されます。「L2スイッチ」がそれです。
次に「センサーの追加」をクリックして、監視する内容を設定していきます。
監視方法で「Ping」を選択します。
Pingを選ぶとPingを飛ばすスキャン間隔やタイムアウトなどの設定があります。ひとまずはデフォルト値で設定し、要件に応じて後で設定を変えるとよいでしょう。
なお、スキャン間隔は最小でも30秒までになっています。一般的には60秒でしょうか?(デフォルト値も60秒です)。
注意が必要なのがPing応答が1回目のスキャンでなかった場合に、一度「警告」ステータスに遷移し、2回目のスキャンでも応答がなかった場合に「ダウン」のステータスになるところ。
この辺がデフォルトなので、ダウンと検出するには2回のスキャンを経て、ということですね。
つまり、60秒でダウンした、と検出したい場合はスキャン間隔を30秒にしないといけない、ということです。
実際にダウンを検出できる最小時間は60秒、ということになりますね。もちろんこの設定は変更可能で、1回目のスキャンでダウンと判定も可能です。
Pingはパケットドロップもある程度あることが想定されますし、VPNを介しているので1回のスキャンでダウンと判定すると結構な頻度で誤検知が出るかもしれません。
今回は30秒、2回目のスキャンでダウンにする設定にしています。
さて、これでPingの設定ができました。
設定後に指定したスキャン時間を超えると初回のスキャンが行われ、疎通があればOKのステータスになります。
お次はSlackに通知する設定です。
Slack連携による通知
PRTG Network Monitorの特徴として、通知方法がクラウドを意識している、というところがあります。
最も詳しい通知ができるのはメール通知ではあるものの、Amazon SQSやSlack通知にネイティブ対応しています。
通知はデフォルトとして管理アカウント単位でメールアドレスの設定が必要です。
(今回はEC2上に設定したのでAmazonSESを設定しましたが、その設定は今回は割愛)
Slackでチャンネル通知用のIncomming Webhookを作成
Slackへ通知を行うためにはまずSlack側でカスタムインテグレーションのIncomming Webhookを作成します。
Slack公式のIncommingWebhookの作成方法はこちら
詳しい作り方はSalesforceからSlackに投稿する仕組みを作ってみた など、弊社ブログでもいくつか紹介されていますので、参考になさってみてください。
通知するチャンネルを設定して、WebhookのURLを取得します。
通知テンプレートを作成する
PRTG Network Monitorで、トップメニューの「設定」→「アカウント設定」→「通知テンプレート」を開きます。
右にある「追加」をクリックしてテンプレートを作成していきましょう。
まずはテンプレートの名前。自分たちで判別の付きやすい名前を付けておきます。
ステータスは開始にしておきます(テンプレートを一時停止する場合はここで指定可能です)
通知を一時停止中に受信したものをどうするか、という処理はお好みで。
次の通知の集約という項目は通知の挙動を選びます。例では「通知を即送信し、集約しない」を入れています。
SNMPトラップのようなセンサーでは同じようなメッセージが重複したり多数発生する場合は重複メッセージの大量通知を抑制するために集約を活用したほうがよさそうです。
アクセス権は細かくユーザーを設定する場合はユーザー単位、で指定可能ですがここではデフォルトのままにしておきます。
通知設定の下には多種多様な通知手段が並んでいます。その中から「Slack メッセージ送信」を選んでONにします。
先程作成したIncommingWebhookのURLを設定し、送信者名、デバイス名、メッセージを文字列やプレースホルダーで指定します。
プレースホルダーも多種ありますがそこは公式マニュアルをご覧ください。
今回使用しているプレースホルダーは以下の内容です。
%sitename → このPRTGサーバの名前
%device → 監視対象機器のデバイス名
%name → 通知テンプレート名
%message → エラーメッセージ
また、通知する項目はカスタマイズ可能で、テストしながら必要な内容を選択しましょう。
今回は「メッセージ」「グループ」「デバイス」「日付と時刻」を通知しています。
Slack通知の設定はこれだけです。
通知テンプレートをセンサーに割り当てる
作成したSlack通知用テンプレートを先に作成したPing監視のセンサーに割り当て、トリガーを設定することでダウンイベントで通知が飛ぶようになります。
Ping監視のセンサーを開いて 並んでいるメニューから「通知トリガー」を選択します。
最初は何も設定されていないので、右にある「+(追加)」をクリックして新しいトリガーを作成します。
この時、ステータストリガーと閾値トリガーを選択になりますが、Ping監視の場合はステータストリガーを用います。
閾値トリガーはトラフィックなどの値が一定の値を超えた場合の通知に使うようですね。
ステータストリガーの設定は、ステータスの変化を検出する待ち時間(秒)とどの通知テンプレートを使うか、の組み合わせで行います。
今回は最初のステータスがダウンになってから30秒後に通知する設定にしてています(その間に回復があれば通知はされません)
また、OKステータスになったときも通知するように設定しています。
今回は設定していませんが一定間隔でステータスの状態をチェックして、再通知させることもできます。
実際にダウンが発生するとSlackのIncommingWebhookで指定したチャンネルに以下のような通知がされます。
Slack通知はかなり簡単に設定でき、必要十分な情報量を通知できるので、Slackを利用されている場合はまず最初の選択肢になるのかな、と思います。
さいごに
今回はPing通知をSlackに通知する、というごく単純な設定を紹介しました。
要件にはほかにいくつもの設定があり、また別の機会に他の機能の紹介もできればと思います。
今も昔もこれからもオフィスや構内のネットワーク機器の管理、監視は必要不可欠なものです。
小規模ネットワークでもまず簡単に構築できるこうしたツールで監視を組んでみてはいかがでしょうか。
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。